export const inBrowser = typeof window !== 'undefined'
export const UA = inBrowser && window.navigator.userAgent.toLowerCase()
export const isIE = UA && /msie|trident/.test(UA)
/**
 * 
 * @param {function} Ctor 
 * @returns Boolean
 * 接收一个参数 Ctor: any，表示待检测的函数或构造函数。
 * 使用 typeof 运算符检查参数 Ctor 是否是一个函数（或构造函数）类型，同时确保它确实是一个函数，而非其他类型的对象。这一步目的是排除掉非函数的情况。
 * 使用正则表达式检查函数的字符串表示（使用 Ctor.toString() 获取函数的字符串形式），判断该字符串中是否包含 "native code"。在JavaScript中，原生方法通常会被标记为 "native code"。
 * 如果参数 Ctor 是一个函数，并且其字符串表示中包含 "native code"，那么 isNative 函数将返回 true，表示该函数是一个原生实现的函数。
 * 总的来说，这个函数用于判断一个函数是否是由底层的 JavaScript 引擎所提供的原生代码实现的。
 */
export function isNative(Ctor) {
  return typeof Ctor === 'function' && /native code/.test(Ctor.toString())
}